package com.nuanshui.heatedloan.userinfo.facade;

import java.util.HashMap;
import java.util.List;

import org.springframework.data.domain.Pageable;

import com.nuanshui.heatedloan.userinfo.model.UserFansRelation;
import com.nuanshui.heatedloan.userinfo.vo.UserVo;



/**
 * 用户社交关系接口
 * @author zxh
 *
 */
public interface UserFansRelationService {
	/**
	 * 获取关注的人数量
	 * @param userId
	 * @return
	 */
	Long countInterestedByUserId(String userId);
	/**
	 * 获取粉丝数量
	 * @param userId
	 * @return
	 */
	Long countFansByUserId(String userId);
	/**
	 * 获取粉丝列表
	 * @param userId
	 * @return
	 */
	List<UserFansRelation> loadFansByUserId(String userId);
	/**
	 * 获取粉丝ID列表
	 * @param userId
	 * @return
	 */
	List<String> loadFansIdsByUserId(String userId);
	/**
	 * 获取用户的粉丝数
	 * @param userId
	 * @return
	 */
	List<String> loadUserFollowers(String userId);
	/**
	 * 在user_fans表中插入关注记录
	 * @param sourceUserId
	 * @param targetUserId
	 */
	void insert(String sourceUserId, String targetUserId);
	/**
	 * 删除user_fans关注记录
	 * @param sourceUserId
	 * @param targetUserId
	 */
	void delete(String sourceUserId, String targetUserId);
	/**
	 * 判断是否是该用户的粉丝
	 * @param sourceUserId   关注者
	 * @param targetUserId   被关注者
	 * @return
	 */
	Boolean isFans(String sourceUserId, String targetUserId);
	
	/**
	 *获取用户的关注用户
	 * @param 
	 * @author guohao
	 * @date 2015年4月22日 上午9:50:57
	 */
    List<UserVo> findInterestedUser(String userId, String loginedId, Pageable pageable);
	
	
	
	/**
	 *获取用户的粉丝用户
	 * @param 
	 * @author guohao
	 * @date 2015年4月22日 上午9:50:57
	 */
    List<UserVo> findAllUserFans(String userId, String loginedId);
	/**
	 * 获取用户的粉丝列表
	 * @param 
	 * @author guohao
	 * @date 2015年4月22日 上午9:50:57
	 */
    List<UserVo> findUserFans(String userId, String loginedId, Pageable pageable);

	/**
	 * 获取所有用户的粉丝数
	 * @return
	 */
	List<HashMap<String,Long>> findUserFansCount();
}
